﻿using Chaotic.DataBase.DBAccessLibrary.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Chaotic.DataBase.SqliteAccess
{
    public class DbKeywords: DefaultSqlKeyword
    {
        public override string[] Keywords { get; } =
        [
            "SELECT", "FROM", "WHERE", "JOIN", "INNER", "OUTER","LEFT", "RIGHT",
            "ON", "AND", "OR", "AS", "INSERT", "UPDATE", "DELETE", "CREATE",
            "TABLE", "DATABASE", "INDEX", "VIEW", "PROCEDURE", "FUNCTION", "TRIGGER", "EXEC",
            "DECLARE", "BEGIN", "END", "CASE", "WHEN", "THEN", "ELSE", "NULL",
            "TOP" , "ADD", "BETWEEN" ,"BY" , "ACTION", "AFTER","ALL", "ALTER","ALWAYS" , "ANALYZE",
            "ASC", "ATTACH", "AUTOINCREMENT", "BEFORE", "CASCADE",  "CHECK","COLLATE","COLUMN",
            "CONFLICT","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME", "CURRENT_TIMESTAMP","DEFAULT",
            "DEFERRABLE","DEFERRED","DESC","DETACH","DISTINCT","DO","DROP","EACH","ESCAPE","EXCEPT","EXCLUDE",
            "EXCLUSIVE","EXISTS","EXPLAIN","FAIL","FILTER","FIRST","FOLLOWING","FOR","FOREIGN","FULL",
            "GENERATED","GROUP","GROUPS","HAVING","IF","IGNORE","IMMEDIATE","IN","INDEX","INDEXED","INITIALLY",
            "INSTEAD","INTERSECT","INTO","IS", "ISNULL",  "KEY", "LAST",  "LIKE", "LIMIT","MATCH","MATERIALIZED",
            "NATURAL","NO", "NOT", "NOTHING", "NOTNULL", "NULLS", "OF", "OFFSET", "ORDER","OTHERS","OVER","PARTITION",
            "PLAN", "PRAGMA", "PRECEDING", "PRIMARY","QUERY", "RAISE", "RANGE", "RECURSIVE", "REFERENCES","REGEXP",
            "REINDEX","RELEASE","RENAME","REPLACE","RESTRICT","RETURNING","ROLLBACK","ROW","ROWS","SAVEPOINT","SET",
            "TEMP","TEMPORARY",  "TIES", "TO", "TRANSACTION",  "UNBOUNDED","UNION", "UNIQUE", "USING","VACUUM","VALUES",
            "VIRTUAL","WINDOW","WITH", "WITHOUT"
        ];

        public override string[] Functions { get; } =
        [
            "COUNT", "SUM", "AVG", "MIN", "MAX", "COALESCE","GETDATE", "LEN",
            "SUBSTRING", "CONVERT", "CAST"
        ];
    }
}
